"""
Fizz Buzz 经典问题
挑战介绍
给定一个整数 num，从 1 到 num 按照下面的规则返回每个数：

如果这个数被 3 整除，返回 'Fizz'。
如果这个数被 5 整除，返回 'Buzz'。
如果这个数能同时被 3 和 5 整除，返回 'FizzBuzz'。
如果这个数既不能被 3 也不能被 5 整除，返回这个数字的字符串格式。
挑战内容
本次挑战中，你需要在 fizzbuzz.py 文件中补充函数 fizz_buzz 的空缺部分。

fizz_buzz 函数接受一个参数，num 用于指定传入的整数;
fizz_buzz 函数输出一个数组。
你需要补充 fizz_buzz 函数，使 fizz_buzz 函数可以识别从 1 到 num 中能被 3 或 5 整除的数。要求如下：

对于传入的整数 num，返回长度为 num 的数组，数组的每个值由 Fizz Buzz 的规则构成;
如果传入的数为 None，需要使用 raise 语句显示 TypeError。
如果传入的整数小于 1，需要使用 raise 语句显示 ValueError。
"""


class Solution(object):

    def fizz_buzz(self, num):
        if num is None:
            raise TypeError('num cannot be None')
        if num < 1:
            raise ValueError('num cannot be less than one')
        results = []
        for i in range(1, num + 1):
            if i % 3 == 0 and i % 5 == 0:
                results.append('FizzBuzz')
            elif i % 3 == 0:
                results.append('Fizz')
            elif i % 5 == 0:
                results.append('Buzz')
            else:
                results.append(str(i))
        return results
